﻿using System;
using System.Collections.Generic;
using System.Text;
using T.FAS.Runtime.Metadata.Entity;

namespace T.FAS.Runtime.Metadata.Client
{
    interface IMetaDataCache
    {
        //bool IsLocalModel { get; set; }

        void Add(IMetaData domainModel);

        IMetaData Get(string metaDataId);

        bool IsCacheMetaDataValid(string metaDataId);

        IMetaData TryGet(string metaDataId, out bool isSuccess);

        IMetaData GetFallback(string metaDataId);

        string GetLatestVersion(string metaDataId);
        long GetTimeStamp(string metaDataKey);

        void Set(IMetaData domainModel);

        Action<string> CacheSyncAction { get; }

        void Remove(string metaDataId);


        IMetaData Get(string metaDataCode, string metaTypeID);
        IMetaData TryGet(string metaDataCode, string metaTypeID, out bool isSuccess);
        IMetaData GetFallback(string metaDataCode, string metaTypeID);
        string GetLatestVersion(string metaDataCode, string metaTypeID);

        void Remove(string metaDataCode, string metaTypeID);
    }
}
